Genetic algorithms are application technologies inspired by mechanisms of inheritance and evolution of living things. In the evolution of living things, genomic changes like crossovers of chromosomes and mutations of genes can occur when new individuals (children) are born from old individuals (parents). In a genetic algorithm, a candidate of a solution to a problem is represented as a data structure, referred to as a chromosome. The data structure represents a plurality of variables or bits referred to as genes. A plurality of n-bit parent chromosomes can be generated and assigned a fitness based on an evaluation of a fitness function. In certain applications, fitness corresponds to a cost associated with a chromosome with a lower cost being more fit than chromosomes with higher costs. Chromosomes with lower costs can be selected for generating new children chromosomes. Children chromosomes are generated through a process of crossover and mutation of parent chromosomes to produce new child chromosomes. Child chromosomes with lower costs or better fitness replace members of the population with higher costs or less fit chromosomes to assure evolutionary advance to an optimal solution.
In the context of circuit optimization, multiple objectives may need to be optimized. Therefore, a multi-objective cost function is employed to combine objectives to produce an associated cost for a given circuit solution. However, if certain constraints associated with a given objective override other constraints associated with other objectives, the multi-objective cost function is not suitable, since weighting coefficients associated with one constraint can override weighting coefficients of other constraints effectively eliminating objectives from the cost function.